/**
 * 接口：@baijian
 * */
$(function () {
    contactInfoTable();

    // 详情弹窗新增按钮设置状态
    $('#addContactBtn').on('click', function () {
        $('#addContactType').val('1');
        $('#addPeopleId').val($('#detailPeopleId').val());
    });

    // 新建一机多人关联获取企业列表数据
    $('#addInfoModal').on('show.bs.modal', function () {
        getCustomer();
    }).on('hide.bs.modal', function () {
        $('#addInfoModal input').val('');
        if ($('#addInfoForm').data('bootstrapValidator') !== undefined) {
            $('#addInfoForm').bootstrapValidator('destroy');
        }
    });
});

/**
 * 功能：一机多用列表初始化
 * */
function contactInfoTable() {
    $('#contactInfoTable').bootstrapTable('destroy');
    $('#contactInfoTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/contactInformationManyPeople/contactInformationManyPeopleList',
        method: 'post',                                     // 请求方式
        contentType: 'application/x-www-form-urlencoded',   // 请求内容类型
        dataType: 'json',                                   // 数据类型
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: true,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: true,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: "server",                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'contactInformationManyPeopleId',
        idField: 'contactInformationManyPeopleId',
        pageNumber: 1,
        pageSize: globalPageSize,                           // 每页的记录行数
        pageList: globalPageList,                           // 可供选择的每页的行数
        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            params.sortName = params.sort;
            params.sortOrder = params.order;

            var searchText = $('#contactName').val();
            if (searchText == '') {
                params.contactName = '';
                params.contactInformation = '';
            } else if (Number(searchText) || Number(searchText) == 0) {
                params.contactName = '';
                params.contactInformation = $('#contactName').val();
            } else {
                params.contactName = $('#contactName').val();
                params.contactInformation = '';
            }

            return params
        },  // 查询参数
        columns: [
            {title: '主键', field: 'contactInformationManyPeopleId', visible: false},
            {title: '序号', align: 'left', valign: 'middle', width: '50',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '当前号码', field: 'contactInformation', align: 'left', valign: 'middle',
                events: format,
                formatter: function (value, row, index) {
                    var html = '<span data-toggle="popover" data-content="暂无">' + value + '</span>';
                    html += '<button class="tel-button" onclick="callCenter(\'' + row.customerId + '\', \'' + row.contactName + '\', \'' + row.contactInformation + '\');"><i class="mdi mdi-phone"></i></button>';
                    return html;
                }
            },
            {title: '当前联系人', field: 'contactName', align: 'left', valign: 'middle'},
            {title: '企业名称', field: 'customerName', align: 'left', valign: 'middle',
                formatter: function (value) {
                    if (value == '') {
                        return '-'
                    } else {
                        return value;
                    }
                }
            },
            {title: '操作', field: 'operate', align: 'right', valign: 'middle', width: '220', events: format, formatter: format.operate},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
            $('[data-toggle="popover"]').popover({
                container: 'body',
                placement: 'right',
                trigger: 'hover',
                html: true,
                title: '其他联系人姓名',
            });
        },
        onLoadError: function (status) {
            if (status == 403) {
                $.alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                $.alert("加载失败！");
            }
        },
        onPreBody: function () {

        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}
/**
 * 功能：详细信息table初始化
 * */
function ditailTable(contactInformationManyPeopleId) {
    $('#contactDitailTable').bootstrapTable('destroy');
    $('#contactDitailTable').bootstrapTable({
        classes: 'table table-bordered table-hover table-striped',
        url: '/contactInformationManyPeople/contactInformationManyPeopleNameList',
        method: 'post',                                     // 请求方式
        contentType: 'application/x-www-form-urlencoded',   // 请求内容类型
        dataType: 'json',                                   // 数据类型
        striped: true,                                      // 是否显示行间隔色
        sortable: true,                                     // 是否启用排序
        sortOrder: 'desc',                                  // 排序方式
        sortName: 'createTm',                               // 排序字段
        cache: false,                                       // 是否使用缓存
        showColumns: false,                                 // 显示隐藏列
        showRefresh: false,                                 // 显示刷新按钮
        showToggle: false,                                  // 切换显示样式
        showFooter: false,                                  // 显示Table脚部
        pagination: true,                                   // 是否显示分页
        showPaginationSwitch: false,                        // 是否显示分页按钮
        clickToSelect: true,                                // 是否启用点击选中行
        maintainSelected: true,                             // 分页是否保留选中
        singleSelect: false,
        undefinedText: '-',                                 // cell没有值时显示
        sidePagination: "server",                           // 分页方式：client客户端分页，server服务端分页
        uniqueId: 'contactInformationManyPeopleNameId',
        idField: 'contactInformationManyPeopleNameId',
        pageNumber: 1,
        pageSize: 5,                                        // 每页的记录行数
        pageList: ['5', '10', '20'],                        // 可供选择的每页的行数

        /*fixedColumns: true,     // 冻结列
        fixedNumber: 2,         // 左侧固定列
        fixedRightNumber: 2,    // 右侧固定列*/

        queryParams: function (params) {
            params.pageSize = params.limit;
            params.pageIndex = (params.offset / params.limit) + 1;
            params.sortName = params.sort;
            params.sortOrder = params.order;

            params.contactInformationManyPeopleId = contactInformationManyPeopleId;
            params.bs = '1';
            return params
        },  // 查询参数
        columns: [
            {title: '主键', field: 'contactInformationManyPeopleNameId', visible: false},
            {title: '序号', align: 'left', valign: 'middle', width: '50',
                formatter: function (value, row, index) {
                    return index + 1;
                }
            },
            {title: '联系人名称', field: 'contactName', align: 'left', valign: 'middle'},
            {title: '状态', field: 'abolishState', align: 'left', valign: 'middle', width: '80',
                formatter: function (value, row) {
                    var status;
                    if (value == '1') {
                        status = '<span class="label label-success-light">启用</span>';
                    } else {
                        status = '<span class="label label-danger-light">废止</span>';
                    }
                    return status;
                }
            },
            {title: '操作', field: 'operate', align: 'right', valign: 'middle', width: '180', events: format, formatter: format.detailOperate},
        ],
        responseHandler: function (result) {
            if (result.code == "000000") {
                var obj = {
                    "rows": result.data,
                    "total": result.totalRecords//总条数
                };
            } else {
                var obj = {
                    "total": 0,
                    "rows": [],
                }
            }
            return obj;
        },
        onLoadSuccess: function (data) {
        },
        onLoadError: function (status) {
            if (status == 403) {
                $.alert("权限不足！禁止访问！");
            } else {
                //加载失败时执行
                $.alert("加载失败！");
            }
        },
        formatLoadingMessage: function () {
            return "请稍等，加载中...";
        },
        formatNoMatches: function () {
            return '无符合条件的记录';
        },
    });
}
/**
 * 功能：table相关自定义功能
 * */
var format = {
    // 联系人姓名
    'mouseover span[data-toggle="popover"]': function (e, value, row, index) {
        var jsonData = {
            contactInformationManyPeopleId: row.contactInformationManyPeopleId,
            bs: 0
        };
        $.ajax({
            url: '/contactInformationManyPeople/contactInformationManyPeopleNameList',
            type: 'POST',
            dataType: "json",
            async: false,
            data: jsonData,
            success: (function (data) {
                if (data.code == "000000") {
                    var contactData = data.data;
                    var nameList = '';
                    if (contactData.length == 0) {
                        nameList = '<span class="label label-brown-light">暂无</span>';
                    } else {
                        for (let i = 0; i < contactData.length; i++) {
                            nameList += '<span class="label label-info-light">' + contactData[i].contactName + '</span>';
                        }
                    }
                    $(e.toElement).attr('data-content', nameList);
                } else {
                    $.alert("操作失败");
                }
            }),
            error: (function () {
                $.alert("失败");
            })
        })
    },
    // 详情
    'click .detail': function (e, value, row, index) {
        $('#contactDitailModel').modal('show');
        $('#phoneNumber').html('当前号码：' + row.contactInformation);
        $('#detailPeopleId').val(row.contactInformationManyPeopleId);
        ditailTable(row.contactInformationManyPeopleId);
    },
    // 主体列表新增联系人按钮
    'click .add-newcontact': function (e, value, row, index) {
        $('#addContactModal').modal('show');
        $('#addPeopleId').val(row.contactInformationManyPeopleId);
    },
    // 切换名称
    'click .switch-name': function (e, value, row, index) {
        switchName(row.contactInformationManyPeopleNameId, row.contactInformationManyPeopleId, row.contactName);
    },
    // 启用废止状态修改
    'click .status-action': function (e, value, row, index) {
        var status;
        if (row.abolishState == 1) {
            status = 2;
        } else {
            status = 1;
        }
        changeStatus(row.contactInformationManyPeopleNameId, status);
    },
    // 主体table列表操作列格式化
    operate: function (value, row) {
        var operateHtml = '<button type="button" class="btn btn-default detail"><i class="mdi mdi-eye"></i>详细</button>';
        operateHtml += '<button type="button" class="btn btn-default add-newcontact"><i class="mdi mdi-plus-circle-outline"></i>新增联系人</button>';
        return operateHtml;
    },
    // 详情弹窗table操作列格式化
    detailOperate: function (value, row) {
        var disabledFlag = '';
        if (row.abolishState == '2') {
            disabledFlag = 'disabled';
        }
        var operateHtml = '<button type="button" class="btn btn-default switch-name" ' + disabledFlag + '><i class="mdi mdi-tumblr-reblog"></i>切换显示</button>';
        // "abolishState": 1,  废止状态  1启动 2废止
        if (row.abolishState == '1') {
            // 启动状态
            operateHtml += '<button type="button" class="btn btn-default status-action"><i class="mdi mdi-do-not-disturb"></i>废止</button>';
        } else {
            // 废止状态
            operateHtml += '<button type="button" class="btn btn-default status-action"><i class="mdi mdi-check-circle"></i>启用</button>';
        }
        return operateHtml;
    }
};

/**
 * 功能：拨打电话
 * */
function callCenter(customerId, contactName, contactInformation) {
    var data = [{
        contactName,
        contactDetails: [contactInformation]
    }];
    window.parent.callModal(customerId, data,6);
}

/**
 * 功能：新增联系人名称
 * 参数：contactName-联系人名称; contactInformationManyPeopleId-联系方式一机多用表主键; type-弹窗入口(1:添加联系人弹窗入口);
 * */
function addName() {
    var contactName = $('#addContactNameVal').val();
    if (!contactName) {
        $.alert({
            title: '提醒',
            content: '联系人名称不能为空，请输入！'
        });
        return;
    }
    var type = $('#addContactType').val();
    var jsonData = {
        contactName,
        contactInformationManyPeopleId: $('#addPeopleId').val()
    };
    $.ajax({
        url: '/contactInformationManyPeople/addContactInformationManyPeopleName',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if (data.code == "000000") {
                $('#addContactModal').modal('hide');
                $('#addContactModal input').val('');
                if (data.data == 'success') {
                    if (type) {
                        refreshTable('contactDitailTable');
                        refreshTable('contactInfoTable');
                    } else {
                        refreshTable('contactInfoTable');
                    }
                } else {
                    $.alert({
                        title: '提醒',
                        content: '联系人名称不能跟之前的一样，请重新添加！'
                    });
                }
            } else {
                $.alert("操作失败");
            }
        }),
        error: (function () {
            $.alert("失败");
        })
    })
}

/**
 * 功能：切换联系人名称
 * 参数：contactName-联系人名称; contactInformationManyPeopleId-联系方式一机多用表主键; contactInformationManyPeopleNameId-联系人名称主键;
 * */
function switchName(contactInformationManyPeopleNameId, contactInformationManyPeopleId, contactName) {
    var type = $('#addContactType').val();
    var jsonData = {
        contactInformationManyPeopleNameId,
        contactInformationManyPeopleId,
        contactName,
    };
    $.ajax({
        url: '/contactInformationManyPeople/switchName',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if (data.code == "000000") {
                $.alert({
                    title: '提示',
                    content: '切换联系人名称成功！',
                    buttons: {
                        confirm: {
                            text: '确认',
                            btnClass: 'btn-primary',
                            action: function () {
                                refreshTable('contactDitailTable');
                                refreshTable('contactInfoTable');
                            }
                        }
                    }
                })
            } else {
                $.alert("操作失败");
            }
        }),
        error: (function () {
            $.alert("失败");
        })
    })
}

/**
 * 功能：启用废止状态修改
 * 参数：contactInformationManyPeopleNameId-联系人名称主键; abolishState-废止状态;
 * */
function changeStatus(contactInformationManyPeopleNameId, abolishState) {
    var jsonData = {
        contactInformationManyPeopleNameId,
        abolishState,
    };
    $.ajax({
        url: '/contactInformationManyPeople/abolishName',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if (data.code == "000000") {
                refreshTable('contactDitailTable');
            } else {
                $.alert("操作失败");
            }
        }),
        error: (function () {
            $.alert("失败");
        })
    })
}

/**
 * 功能：新建一机多人关联
 * 参数：contactInformation-当前号码; extensionNumber-分机号; contactName-当前联系人; customerName-企业名称;
 * */
function addContact() {
    var formDom = $('#addInfoForm');
    // 联系方式
    var contactInformation = $('#addPhoneNumber').val();
    // 分机号
    var extensionNumber = $('#addExtNumber').val();
    // 联系人姓名
    var contactName = $('#addContactName').val();
    // 客户id
    var customerId = $('#addEnterprise').val();
    // 客户名称
    var customerName = $('#addEnterprise').find('option:selected').text();

    formDom.bootstrapValidator({
        fields: {
            addPhoneNumber: {
                validators: {
                    notEmpty: {
                        message: '联系方式不能为空'
                    },
                    regexp: {
                        regexp: /^\d+$/,
                        message: '手机号码只能是数字'
                    },
                    stringLength:{
                        max: 20,
                        message:'请输入正确的联系方式'
                    }
                }
            },
            addContactName: {
                validators: {
                    notEmpty: {
                        message: '联系人姓名不能为空'
                    }
                }
            },
            addEnterprise: {
                validators: {
                    notEmpty: {
                        message: '客户名称不能为空'
                    }
                }
            },
        },
    })
    formDom.bootstrapValidator('validate');   // 提交验证
    if (!formDom.data('bootstrapValidator').isValid()) {
        return;
    }

    var jsonData = {
        contactInformation,
        extensionNumber,
        contactName,
        customerId,
        customerName,
        customerId
    };
    $.ajax({
        url: '/contactInformationManyPeople/addContactInformationManyPeople',
        type: 'POST',
        dataType: "json",
        contentType: "application/json;charset=utf-8",
        data: JSON.stringify(jsonData),
        success: (function (data) {
            if (data.code == "000000") {
                if (data.data == 'SUCCESS') {
                    refreshTable('contactInfoTable');
                    $('#addInfoModal').modal('hide');
                    $('#addInfoModal input').val('');
                } else {
                    $.alert({
                        title: '提醒',
                        content: '联系方式已存在，请检查后重试!',
                    });
                }
            } else {
                $.alert("操作失败");
            }
        }),
        error: (function () {
            $.alert("失败");
        })
    })
}

/**
 * 功能：客户下拉数据
 * */
function getCustomer() {
    $.ajax({
        url: '/customerController/getCustomerList',
        type: 'POST',
        dataType: "json",
        success: (function (data) {
            if (data.code == "000000") {
                var html = '';
                $.each(data.data, function(n, value) {
                    // 判断错误数据，错误则不显示在列表中
                    if (value.memberErrorData != 1) {
                        html += '<option data-type="'+value.customerType+'" value="' + value.customerId + '">' +  value.customerName + '</option>';
                    }
                });
                $('#addEnterprise').selectpicker('destroy').html(html).selectpicker({
                    sanitize: true,
                    size: 10
                });
            } else {
                alert("获得客户名称下拉请求失败");
            }
        }),
        error: (function (res) {
            alert("获得客户名称下拉请求失败");
        }),
        beforeSend: function(){
            $('#customerList').selectpicker('destroy').html('<option value="加载中...">加载中...</option>')
        },
    });
}

/**
 * 功能：刷新表格
 * */
function refreshTable(id) {
    $('#' + id).bootstrapTable('refresh');
}
